/**
 * 短信群发-联系人列表js
 * author:miaohuaiyu
 * Created by mhy on 2017/1/9.
 */
var contactsName = new Array();   //联系人名 为了判断是否有重名的情况

     // oSort是排序类型数组, 'chinese-asc'是自己定义的类型的排序(*-asc || *-desc)名称
     // 插件应该会根据表格中的内容的类型(string, number, chinese)进行比较排序，
     // 如果以chinese类型来排序则用oSort['chinese-asc']和oSort['chinese-desc']的方法
     // oSort对应的function里面自定义比较方法
     jQuery.fn.dataTableExt.oSort['chinese-asc'] = function(x,y) {
             //javascript自带的中文比较函数，具体用法可自行查阅了解
             return x.localeCompare(y);
         };

     jQuery.fn.dataTableExt.oSort['chinese-desc'] = function(x,y) {
             return y.localeCompare(x);
         };

     // aTypes是插件存放表格内容类型的数组
     // reg赋值的正则表达式，用来判断是否是中文字符
     // 返回值push到aTypes数组，排序时扫描该数组，'chinese'则调用上面两个方法。返回null默认是'string'
     jQuery.fn.dataTableExt.aTypes.push(function(sData) {
             var reg =/^[\u4e00-\u9fa5]{0,}$/;
             if(reg.test(sData)) {
                     return 'chinese';
                 }
             return null;
        });
$(document).ready(function() {

    // 显示联系人列表
   displayConctactList();


    //短息群发按钮
    $("#SMS").click(function () {
        sendManyMessage();
    });

    //添加联系人按钮
    $("button.btn-success").click(function () {
        addContactInfo();
    });

    //删除多个联系人按钮
    $("button.btn-danger").click(function () {
        var $checkboxes = $("input[type='checkbox']");
        var count = 0;

        for(var i = 1;i < $checkboxes.length;i++){
            if($checkboxes.eq(i).is(':checked')){
               count++;
            }
        }   //end for

        if(count == 0){     //如果没有选定
            $(this).attr("data-toggle","");
            createPNotify("提示信息","info","请选择联系人");

            return;
        }else{
            $(this).attr("data-toggle","modal");
        }

    });

    //全选按钮
    $("#check-all").click(function () {
        checkAll(this,$('#datatable-checkbox'));
    })

});

//初始化表格
function initTable(data){
    var $datatable = $('#datatable-checkbox');

    $datatable.dataTable( {
        data:data,
        columns:[
            {
                "render": function () {
                    return '<input type="checkbox" class="flat"  name="table_records"/>';
                },
            },
            { "sTitle": "ID标识符" },
            { "sTitle": "联系人" },
            { "sTitle": "电话" },
            { "sTitle": "操作" },
        ],
        order:[
            [2, "asc"]
        ],
        columnDefs: [
            { orderable: false, targets: [0] },
        ]
    } );
}

//弹出编辑信息
function editContactInfo(e){
    var $modal = $(".bs-example-modal-ec");
    var conId = $(e).parents("tr").children('td').eq(1).text();
    var name = $(e).parents("tr").children('td').eq(2).text();
    var phoneNumber = $(e).parents("tr").children('td').eq(3).text();

    $("input[name='name']",$modal).val(name);
    $("input[name='phoneNumber']",$modal).val(phoneNumber);
    $(".btn-primary",$modal).attr("onclick","editContact(" + conId + ',\'' + name + '\');');  //设置确定按钮
};

//编辑联系人
function editContact(conId,oldName){
    //编辑联系人
    var $modal = $(".bs-example-modal-ec");
    var name = $("input[name='name']",$modal).val();
    var phoneNumber = $("input[name='phoneNumber']",$modal).val();
    var $error =  $("h4",$modal).eq(1);
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮

    //判断联系人是否符合规范
    if(!judgeContact($error,name,phoneNumber)){
        return ;
    }
    for(var i = 0;i < contactsName.length ;i++){
        if(name == contactsName[i] && name != oldName) {
            promptInformation($error, "error", "联系人已经存在");
            return;
        }
    }   //end for

    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用
    $.ajax({
        type:'PUT',//请求类型
        url:'../message/contacts/' + conId,//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        data:JSON.stringify({
                                "opt": "update",


                                "name": name,
                                "phone_number": phoneNumber
        }),
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返


            // 回的值做相应的一系列操作
            var $prompt = $("h4",$modal).eq(1) ;    //提示

            if(json.result){
                //操作成功提示
                promptInformation($prompt,"success","编辑成功 ..稍后跳转");

                setTimeout(function(){
                    $closeButton.trigger("click");  //关闭弹出框

                    //刷新列表
                    clearTables($('#datatable-checkbox'));
                    displayConctactList();
                    $prompt.text("");   //清空提示信息
                    $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                }, 500);


            }else{
                //操作失败提示
                $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                promptInformation($prompt,"error",json.err_msg)
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}

//弹出添加信息
function addContactInfo(){
    var $modal = $(".bs-example-modal-ac");

    $("h4",$modal).eq(1).css("display","none");
    $("input[name='name']",$modal).val("");
    $("input[name='phoneNumber']",$modal).val("");

    $(".btn-primary",$modal).attr("onclick","addContact();");  //设置确定按钮
};
//添加联系人
function addContact(){
    //添加联系人
    var $modal = $(".bs-example-modal-ac");
    var name = $("input[name='name']",$modal).val();
    var phoneNumber = $("input[name='phoneNumber']",$modal).val();
    var $error =  $("h4",$modal).eq(1);
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮

    //判断联系人是否符合规范
    if(!judgeContact($error,name,phoneNumber)){
        return ;
    }

    for(var i = 0;i < contactsName.length ;i++){
        if(name == contactsName[i]) {
            promptInformation($error, "error", "联系人已经存在");
            return;
        }
    }   //end for

    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用
    $.ajax({
        type:'PUT',//请求类型
        url:'../message/contacts/',//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        data:JSON.stringify({
                                "opt": "save",
                                "name": name,
                                "phone_number": phoneNumber
        }),
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var $prompt = $("h4",$modal).eq(1);

            if(json.result){
                //操作成功提示
                promptInformation($prompt,"success","添加成功 ..稍后跳转");

                //刷新
                setTimeout(function(){
                    $closeButton.trigger("click");  //关闭弹出框
                    //刷新列表
                    clearTables($('#datatable-checkbox'));
                    displayConctactList();
                    $prompt.text("");   //清空提示信息
                    $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                }, 500);

            }else{
                $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                //操作失败提示
                promptInformation($prompt,"error",json.err_msg);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}

//删除选定弹出框
function deleteContactInfo(e) {
    var $modal = $(".bs-example-modal-dc");
    var name = $(e).parents("tr").children('td').eq(2).text();
    var conId = $(e).parents("tr").children('td').eq(1).text();

    $("h4",$modal).eq(1).text("删除联系人:"+ name);       //设置标题名称
    $(".btn-primary",$modal).attr("onclick","deleteContact("+conId+  ',' +'\'' + name +'\'' + ");");  //设置确定按钮
}
//删除联系人
function deleteContact(conId,name) {
    //编辑联系人
    var $modal = $(".bs-example-modal-dc");
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮

    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用

    $.ajax({
        type:'DELETE',//请求类型
        url:'../message/contacts/'+conId,//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var $prompt = $("h4",$modal).eq(1);

            if(json.result){
                for(var i = 0; i < contactsName.length;i++){
                    if(name == contactsName[i]){
                        contactsName.splice(i,1);
                    }
                }    //end for

                //操作成功提示
                createPNotify("提示","success","成功删除联系人");
                setTimeout(function(){
                    $closeButton.trigger("click");  //关闭弹出框

                    //刷新列表
                    clearTables($('#datatable-checkbox'));
                    displayConctactList();
                    $prompt.text("");   //清空提示信息
                    $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                }, 500);
            }else{
                createPNotify("警告","success","不能删除部门联系人");
                alert("警告：不能删除部门联系人。");
                $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                //操作失败提示
                promptInformation($prompt,"error",json.err_msg);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}

//删除选定弹出框
function deleteContactGroupInfo() {
    $(".btn-primary",".bs-example-modal-dcg").attr("onclick","deleteContactGroup();");  //设置确定按钮
}

//删除多个联系人
function deleteContactGroup() {
    var contactArr = new Array();
    var $modal = $(".bs-example-modal-dcg");
    var $prompt = $("h4",$modal).eq(1);
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮
    var conId;

    var dttable = $("#datatable-checkbox").dataTable();
    var nTrs = dttable.fnGetNodes();

    for(var i = 0;i < nTrs.length;i++){
        if($(nTrs[i]).children("td").eq(0).children("input").prop("checked")){
            conId = $(nTrs[i]).children("td").eq(1).text();
            contactArr.push(conId);
        }
    }   //end for


    if(contactArr.length == 0){     //如果没有选定
        promptInformation($prompt,"error","请选择要删除的联系人...");

        setTimeout(function(){
            $closeButton.trigger("click");  //关闭弹出框
        }, 500);
        return;
    }

    promptInformation($prompt,"success","正在删除...");
    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用

    for(var i = 0;i < contactArr.length; i++){
        $.ajax({
            type:'DELETE',//请求类型
            url:'../message/contacts/' + contactArr[i],//请求地址
            contentType: 'application/json;',//发送信息至服务器时内容编码类型
            dataType:'JSON',/*预期服务器返回的数据类型*/
            success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作

                if(!json.result){
                   deleteFailArr.push(contactArr[i]);
                }
            },
            cache:true,
        });
    }   //end for

    setTimeout(function () {    //刷新页面
        $closeButton.trigger("click");  //关闭弹出框
        //刷新列表
        reloadPage();
        },parseInt(60 * contactArr.length));
}

/* 联系人操作按钮:对一个联系人发送短信*/
function sendOneMessage(e) {
   var contactId =  $(e).parents("tr").children("td").eq(1).text(); //联系人id

   window.location.href = "../sms/sms_groupsends.html?contactId=" + contactId;  //跳转
}

/* 联系人操作按钮:对多个联系人发送短信*/
function sendManyMessage() {
    var contactArr = new Array();
    var $checkboxes = $("input[type='checkbox']");
    var conId;

    for(var i = 1;i < $checkboxes.length;i++){
        if($checkboxes.eq(i).is(':checked')){
            conId = $checkboxes.eq(i).parents("tr").children("td").eq(1).text();
            contactArr.push(conId);
        }   //end if
    }   //end for

    window.location.href = "../sms/sms_groupsends.html?contactArr=" + contactArr;  //跳转
}

/* 检测联系人信息是否规范*/
function judgeContact($error,name,phoneNumber) {
    if(name.length == 0 || phoneNumber.length == 0){
        $error.css("display","block");
        $error.css("color","red");
        $error.text("信息必须填写完整");

        return false;
    }else if(name.length > 10 || phoneNumber.length > 13 || phoneNumber.length < 8){
        $error.css("display","block");
        $error.css("color","red");
        $error.text("名字或者电话号码长度要符合规范");

        return false;
    }
    for(var i = 0;i < phoneNumber.length;i++){
        if((phoneNumber[i] < '0' || phoneNumber[i] > '9') && phoneNumber[i] != '-'){
            $error.css("display","block");
            $error.css("color","red");
            $error.text("电话号码必须是数字");

            return false;
        }
    }   //end for

    return true;
}

/*函数:显示联系人列表*/
function displayConctactList(){
    $.ajax({
        type:'GET',//请求类型
        url:'../message/contacts/all',//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var contacts = json.data.contacts;
            var datas = new Array();
            var arr = new Array();
            var a = new Array();

            if(count(contacts) == 0){
                createPNotify("提示信息","info","您可以在这里添加您的通讯录");
            }

            for(var i = 0; i < contacts.length; i++){
                arr = [];
                arr[1] = contacts[i].id;
                arr[2] = contacts[i].name;
                arr[3] = contacts[i].phone_number;
                contactsName[i] = contacts[i].name;   //将联系人名添加到数组中

                a = [];
                a[0] = "<a href='#' class='btn btn-info btn-xs' data-toggle='modal' data-target='.bs-example-modal-ec' onclick='editContactInfo(this)'><i class='fa fa-pencil'></i> 编辑 </a>";
                a[1] = "<a href='#' class='btn  btn-success btn-xs' onclick='sendOneMessage(this)'><i class='fa fa-comments-o'></i> 短信 </a>";
                a[2] = "<a href='#' class='btn btn-danger btn-xs' data-toggle='modal' data-target='.bs-example-modal-dc' onclick='deleteContactInfo(this)'><i class='fa fa-pencil'></i> 删除 </a>";

                arr[4] =  a.join(" ");  //去掉js数组中的逗号

                datas[i] = arr;

            }   //end for
            initTable(datas);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}
